Aller au contenu principal

Orpi Financement - Courtage à Mandelieu la Napoule

Publié le

Orpi Financement à Mandelieu : un accompagnement clé pour simplifier les projets immobiliers

 

Face à la complexité croissante des démarches immobilières, Orpi Mandelieu renforce son accompagnement en proposant Orpi Financement, un service dédié au financement immobilier, directement accessible au sein de l’agence locale.
L’objectif est clair : simplifier le parcours immobilier des particuliers à Mandelieu-la-Napoule, qu’ils soient acheteurs, vendeurs ou porteurs d’un nouveau projet.


Un constat : le financement est devenu un frein majeur

À Mandelieu comme ailleurs, de nombreux projets immobiliers se heurtent aujourd’hui à des difficultés liées au financement :

  • évolution rapide des taux d’intérêt,

  • conditions d’octroi de crédit plus strictes,

  • manque de lisibilité pour les particuliers.

Pour beaucoup de clients, le financement est désormais l’étape la plus anxiogène d’un projet immobilier. C’est dans ce contexte qu’Orpi Mandelieu a fait le choix de proposer un accompagnement dédié et structuré.


Qu’est-ce qu’Orpi Financement à Mandelieu ?

Orpi Financement à Mandelieu est un service d’accompagnement au crédit immobilier intégré à l’agence Orpi locale.
Il permet aux clients de bénéficier :

  • d’une analyse personnalisée de leur capacité de financement,

  • d’un accompagnement dans la constitution du dossier,

  • d’une meilleure compréhension des solutions de crédit existantes.

Contrairement à une démarche classique, le client n’est pas seul face aux banques : le financement est intégré dès le début du projet immobilier, en lien direct avec la transaction.


Un service pensé pour sécuriser les projets immobiliers à Mandelieu

L’un des enjeux majeurs du marché immobilier local est la sécurisation des ventes et des achats.
Grâce à Orpi Financement à Mandelieu :

  • les acheteurs gagnent en crédibilité auprès des vendeurs,

  • les projets sont plus solides et mieux anticipés,

  • les délais sont mieux maîtrisés.

Pour les vendeurs, c’est aussi un avantage : travailler avec des acquéreurs dont le financement a été étudié en amont réduit fortement le risque de refus de prêt.


Un accompagnement local, au plus près du marché de Mandelieu

Le service Orpi Financement proposé à Mandelieu s’appuie sur :

  • une connaissance fine du marché immobilier local,

  • une compréhension des profils d’acheteurs propres à la commune,

  • un accompagnement humain et pédagogique.

Cette approche locale permet d’adapter le financement aux réalités du secteur : type de biens, budgets, projets de résidence principale, secondaire ou d’investissement.


Pourquoi Orpi Mandelieu a intégré Orpi Financement

En proposant Orpi Financement, Orpi Mandelieu ne se limite plus à la transaction immobilière.
L’agence accompagne désormais ses clients sur l’un des piliers essentiels du projet : le financement, souvent décisif.

Cette démarche s’inscrit dans une volonté de :

  • simplifier les démarches,

  • réduire le stress des particuliers,

  • offrir une vision claire et réaliste du projet immobilier.


Orpi Financement à Mandelieu : pour qui ?

Ce service s’adresse notamment :

  • aux acheteurs qui souhaitent savoir s’ils peuvent réellement acheter,

  • aux vendeurs qui veulent sécuriser leur projet futur,

  • aux particuliers qui ne maîtrisent pas les aspects bancaires,

  • à toute personne souhaitant être accompagnée sans multiplier les interlocuteurs.


Conclusion : un levier clé pour réussir son projet immobilier à Mandelieu

Avec Orpi Financement, Orpi Mandelieu propose un accompagnement cohérent et structuré, répondant aux attentes actuelles des particuliers.
Dans un contexte immobilier exigeant, intégrer le financement dès le départ devient un facteur déterminant de réussite.

👉 À Mandelieu-la-Napoule, Orpi Financement s’impose comme une solution locale pour clarifier, sécuriser et simplifier les projets immobiliers.

<!--
========================================================================
  SIMULATEUR DE PRÊT IMMOBILIER - ORPI MANDELIEU / ORPI FINANCEMENT
========================================================================
  Module autonome (HTML + CSS + JS dans un seul fichier).
  À intégrer dans la page : https://www.orpi-mandelieu.com/orpi-financement
  
  INTÉGRATION POUR LE WEBMASTER :
  ------------------------------------------------------------------------
  1. Tout le code ci-dessous est encapsulé dans <div id="orpi-simulateur-financement">
     -> aucun risque de conflit avec le CSS existant du site (toutes les
        classes sont préfixées "orpi-sim-").
  2. Aucune dépendance externe (pas de jQuery, pas de librairie). 
     Fonctionne en pur HTML/CSS/JS vanilla.
  3. Compatible tous navigateurs modernes (Chrome, Firefox, Safari, Edge).
  4. Responsive : s'adapte automatiquement mobile/tablette/desktop.
  5. Emplacement recommandé : juste après la section "Un service simple, 
     rapide et transparent" et avant la section "Lancez votre projet en 
     toute sérénité", ou en remplacement du bloc actuel.
  6. Le bouton "Être contacté" pointe vers le formulaire de contact 
     existant en bas de la page (#contact). À adapter si besoin.
  7. Les taux moyens utilisés sont indicatifs (mis à jour avril 2026).
     Ils peuvent être modifiés dans la section JS, variable TAUX_INDICATIFS.
========================================================================
-->

<div id="orpi-simulateur-financement">

  <!-- ================== STYLES CSS ENCAPSULÉS ================== -->
  <style>
    /* Reset local pour éviter les conflits avec le CSS du site */
    #orpi-simulateur-financement * {
      box-sizing: border-box;
    }

    #orpi-simulateur-financement {
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
      max-width: 1100px;
      margin: 40px auto;
      padding: 0 15px;
      color: #2c3e50;
      line-height: 1.5;
    }

    .orpi-sim-wrapper {
      background: #ffffff;
      border-radius: 12px;
      box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
      overflow: hidden;
      border: 1px solid #e8eaed;
    }

    /* En-tête aux couleurs Orpi (rouge) */
    .orpi-sim-header {
      background: linear-gradient(135deg, #295A82 0%, #1D405D 100%);
      color: #fff;
      padding: 30px 35px;
      text-align: center;
    }

    .orpi-sim-header h2 {
      margin: 0 0 8px 0;
      font-size: 28px;
      font-weight: 700;
      letter-spacing: -0.3px;
    }

    .orpi-sim-header p {
      margin: 0;
      font-size: 15px;
      opacity: 0.95;
    }

    /* Corps : 2 colonnes */
    .orpi-sim-body {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 0;
    }

    .orpi-sim-inputs,
    .orpi-sim-results {
      padding: 35px;
    }

    .orpi-sim-inputs {
      background: #fafbfc;
      border-right: 1px solid #e8eaed;
    }

    .orpi-sim-results {
      background: #ffffff;
    }

    .orpi-sim-section-title {
      font-size: 12px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 1.2px;
      color: #295A82;
      margin: 0 0 20px 0;
      padding-bottom: 10px;
      border-bottom: 2px solid #295A82;
    }

    /* Champs de saisie */
    .orpi-sim-field {
      margin-bottom: 24px;
    }

    .orpi-sim-field-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 10px;
    }

    .orpi-sim-field-label {
      font-size: 14px;
      font-weight: 600;
      color: #2c3e50;
    }

    .orpi-sim-field-value {
      font-size: 16px;
      font-weight: 700;
      color: #295A82;
      background: #fff;
      padding: 5px 12px;
      border-radius: 6px;
      border: 1px solid #e8eaed;
      min-width: 120px;
      text-align: right;
    }

    .orpi-sim-field-value-input {
      font-size: 16px;
      font-weight: 700;
      color: #295A82;
      background: #fff;
      padding: 5px 12px;
      border-radius: 6px;
      border: 1px solid #e8eaed;
      min-width: 120px;
      text-align: right;
      font-family: inherit;
      width: 130px;
    }

    .orpi-sim-field-value-input:focus {
      outline: none;
      border-color: #295A82;
      box-shadow: 0 0 0 3px rgba(41, 90, 130, 0.15);
    }

    /* Curseurs (sliders) personnalisés */
    .orpi-sim-slider {
      -webkit-appearance: none;
      appearance: none;
      width: 100%;
      height: 6px;
      border-radius: 3px;
      background: #e0e3e7;
      outline: none;
      cursor: pointer;
      margin: 0;
    }

    .orpi-sim-slider::-webkit-slider-thumb {
      -webkit-appearance: none;
      appearance: none;
      width: 22px;
      height: 22px;
      border-radius: 50%;
      background: #295A82;
      cursor: pointer;
      border: 3px solid #fff;
      box-shadow: 0 2px 6px rgba(41, 90, 130, 0.4);
      transition: transform 0.15s;
    }

    .orpi-sim-slider::-webkit-slider-thumb:hover {
      transform: scale(1.15);
    }

    .orpi-sim-slider::-moz-range-thumb {
      width: 22px;
      height: 22px;
      border-radius: 50%;
      background: #295A82;
      cursor: pointer;
      border: 3px solid #fff;
      box-shadow: 0 2px 6px rgba(41, 90, 130, 0.4);
    }

    .orpi-sim-slider-bounds {
      display: flex;
      justify-content: space-between;
      margin-top: 6px;
      font-size: 11px;
      color: #8a96a3;
    }

    /* Type de projet : boutons radio stylisés */
    .orpi-sim-project-type {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 8px;
      margin-bottom: 24px;
    }

    .orpi-sim-project-btn {
      padding: 10px 8px;
      background: #fff;
      border: 1.5px solid #e0e3e7;
      border-radius: 8px;
      font-size: 13px;
      font-weight: 600;
      color: #5a6573;
      cursor: pointer;
      transition: all 0.2s;
      text-align: center;
      font-family: inherit;
    }

    .orpi-sim-project-btn:hover {
      border-color: #295A82;
      color: #295A82;
    }

    .orpi-sim-project-btn.active {
      background: #295A82;
      border-color: #295A82;
      color: #fff;
      box-shadow: 0 3px 8px rgba(41, 90, 130, 0.3);
    }

    /* Bloc résultat principal */
    .orpi-sim-result-main {
      background: linear-gradient(135deg, #f8f9fb 0%, #ffffff 100%);
      border: 2px solid #295A82;
      border-radius: 12px;
      padding: 25px;
      text-align: center;
      margin-bottom: 25px;
    }

    .orpi-sim-result-label {
      font-size: 13px;
      color: #5a6573;
      text-transform: uppercase;
      letter-spacing: 0.8px;
      font-weight: 600;
      margin-bottom: 8px;
    }

    .orpi-sim-result-amount {
      font-size: 42px;
      font-weight: 800;
      color: #295A82;
      line-height: 1;
      margin: 5px 0;
    }

    .orpi-sim-result-unit {
      font-size: 16px;
      font-weight: 600;
      color: #5a6573;
      margin-top: 5px;
    }

    /* Détails (lignes) */
    .orpi-sim-details {
      background: #fafbfc;
      border-radius: 8px;
      padding: 5px 18px;
      margin-bottom: 20px;
    }

    .orpi-sim-detail-row {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 12px 0;
      border-bottom: 1px solid #e8eaed;
      font-size: 14px;
    }

    .orpi-sim-detail-row:last-child {
      border-bottom: none;
    }

    .orpi-sim-detail-label {
      color: #5a6573;
    }

    .orpi-sim-detail-value {
      font-weight: 700;
      color: #2c3e50;
    }

    .orpi-sim-detail-value.highlight {
      color: #295A82;
    }

    /* Graphique de répartition */
    .orpi-sim-chart-section {
      margin-bottom: 25px;
    }

    .orpi-sim-chart-title {
      font-size: 13px;
      font-weight: 600;
      color: #5a6573;
      margin-bottom: 12px;
      text-transform: uppercase;
      letter-spacing: 0.5px;
    }

    .orpi-sim-chart-bar {
      display: flex;
      height: 32px;
      border-radius: 6px;
      overflow: hidden;
      box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
    }

    .orpi-sim-chart-capital {
      background: linear-gradient(135deg, #295A82 0%, #1D405D 100%);
      display: flex;
      align-items: center;
      justify-content: center;
      color: #fff;
      font-size: 12px;
      font-weight: 700;
      transition: width 0.4s ease;
      min-width: 40px;
    }

    .orpi-sim-chart-interest {
      background: linear-gradient(135deg, #5a6573 0%, #3d4654 100%);
      display: flex;
      align-items: center;
      justify-content: center;
      color: #fff;
      font-size: 12px;
      font-weight: 700;
      transition: width 0.4s ease;
      min-width: 40px;
    }

    .orpi-sim-chart-insurance {
      background: linear-gradient(135deg, #f5a623 0%, #d68910 100%);
      display: flex;
      align-items: center;
      justify-content: center;
      color: #fff;
      font-size: 12px;
      font-weight: 700;
      transition: width 0.4s ease;
      min-width: 30px;
    }

    .orpi-sim-chart-legend {
      display: flex;
      justify-content: space-around;
      margin-top: 12px;
      flex-wrap: wrap;
      gap: 10px;
    }

    .orpi-sim-legend-item {
      display: flex;
      align-items: center;
      gap: 6px;
      font-size: 12px;
      color: #5a6573;
    }

    .orpi-sim-legend-dot {
      width: 12px;
      height: 12px;
      border-radius: 3px;
    }

    /* Bouton CTA */
    .orpi-sim-cta {
      display: block;
      width: 100%;
      padding: 16px 24px;
      background: linear-gradient(135deg, #295A82 0%, #1D405D 100%);
      color: #fff;
      text-align: center;
      text-decoration: none;
      border-radius: 8px;
      font-size: 16px;
      font-weight: 700;
      cursor: pointer;
      transition: all 0.2s;
      border: none;
      font-family: inherit;
      letter-spacing: 0.3px;
      box-shadow: 0 4px 12px rgba(41, 90, 130, 0.3);
    }

    .orpi-sim-cta:hover {
      transform: translateY(-2px);
      box-shadow: 0 6px 18px rgba(41, 90, 130, 0.4);
      color: #fff;
      text-decoration: none;
    }

    .orpi-sim-cta-secondary {
      display: block;
      width: 100%;
      padding: 12px 24px;
      background: #fff;
      color: #295A82;
      text-align: center;
      text-decoration: none;
      border-radius: 8px;
      font-size: 14px;
      font-weight: 600;
      cursor: pointer;
      transition: all 0.2s;
      border: 1.5px solid #295A82;
      font-family: inherit;
      margin-top: 10px;
    }

    .orpi-sim-cta-secondary:hover {
      background: #eef3fb;
      color: #295A82;
      text-decoration: none;
    }

    /* Mention légale */
    .orpi-sim-disclaimer {
      padding: 18px 35px;
      background: #f8f9fb;
      border-top: 1px solid #e8eaed;
      font-size: 11px;
      color: #8a96a3;
      text-align: center;
      line-height: 1.6;
    }

    /* Tableau d'amortissement (toggle) */
    .orpi-sim-amortization-toggle {
      text-align: center;
      margin-top: 15px;
    }

    .orpi-sim-amortization-link {
      background: none;
      border: none;
      color: #295A82;
      font-size: 13px;
      font-weight: 600;
      cursor: pointer;
      text-decoration: underline;
      font-family: inherit;
      padding: 5px;
    }

    .orpi-sim-amortization-link:hover {
      color: #1D405D;
    }

    .orpi-sim-amortization-table {
      display: none;
      margin-top: 20px;
      max-height: 400px;
      overflow-y: auto;
      border: 1px solid #e8eaed;
      border-radius: 8px;
    }

    .orpi-sim-amortization-table.visible {
      display: block;
    }

    .orpi-sim-amortization-table table {
      width: 100%;
      border-collapse: collapse;
      font-size: 12px;
    }

    .orpi-sim-amortization-table th {
      background: #2c3e50;
      color: #fff;
      padding: 10px 8px;
      text-align: right;
      position: sticky;
      top: 0;
      font-weight: 600;
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.3px;
    }

    .orpi-sim-amortization-table th:first-child {
      text-align: center;
    }

    .orpi-sim-amortization-table td {
      padding: 8px;
      text-align: right;
      border-bottom: 1px solid #f0f2f5;
    }

    .orpi-sim-amortization-table td:first-child {
      text-align: center;
      font-weight: 600;
      background: #fafbfc;
    }

    .orpi-sim-amortization-table tr:hover td {
      background: #eef3fb;
    }

    /* RESPONSIVE */
    @media (max-width: 850px) {
      .orpi-sim-body {
        grid-template-columns: 1fr;
      }
      .orpi-sim-inputs {
        border-right: none;
        border-bottom: 1px solid #e8eaed;
      }
      .orpi-sim-header h2 {
        font-size: 22px;
      }
      .orpi-sim-result-amount {
        font-size: 34px;
      }
      .orpi-sim-inputs,
      .orpi-sim-results {
        padding: 25px 20px;
      }
    }

    @media (max-width: 480px) {
      .orpi-sim-project-type {
        grid-template-columns: 1fr;
      }
      .orpi-sim-field-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
      }
      .orpi-sim-field-value,
      .orpi-sim-field-value-input {
        width: 100%;
        text-align: center;
      }
    }
  </style>

  <!-- ================== STRUCTURE HTML ================== -->
  <div class="orpi-sim-wrapper">

    <!-- En-tête -->
    <div class="orpi-sim-header">
      <h2>Simulateur de prêt immobilier</h2>
      <p>Calculez vos mensualités en temps réel et découvrez le coût total de votre crédit</p>
    </div>

    <!-- Corps : saisie + résultats -->
    <div class="orpi-sim-body">

      <!-- COLONNE GAUCHE : SAISIE -->
      <div class="orpi-sim-inputs">
        <div class="orpi-sim-section-title">Votre projet</div>

        <!-- Type de projet -->
        <div class="orpi-sim-project-type">
          <button type="button" class="orpi-sim-project-btn active" data-type="achat">Acheter</button>
          <button type="button" class="orpi-sim-project-btn" data-type="construction">Construire</button>
          <button type="button" class="orpi-sim-project-btn" data-type="renegociation">Renégocier</button>
        </div>

        <!-- Montant emprunté -->
        <div class="orpi-sim-field">
          <div class="orpi-sim-field-header">
            <label class="orpi-sim-field-label" for="orpi-sim-montant">J'emprunte</label>
            <input type="text" id="orpi-sim-montant-input" class="orpi-sim-field-value-input" value="200 000 €" />
          </div>
          <input type="range" id="orpi-sim-montant" class="orpi-sim-slider"
                 min="20000" max="2000000" step="5000" value="200000" />
          <div class="orpi-sim-slider-bounds">
            <span>20 000 €</span>
            <span>2 000 000 €</span>
          </div>
        </div>

        <!-- Durée -->
        <div class="orpi-sim-field">
          <div class="orpi-sim-field-header">
            <label class="orpi-sim-field-label" for="orpi-sim-duree">Sur</label>
            <span class="orpi-sim-field-value" id="orpi-sim-duree-value">20 ans</span>
          </div>
          <input type="range" id="orpi-sim-duree" class="orpi-sim-slider"
                 min="5" max="30" step="1" value="20" />
          <div class="orpi-sim-slider-bounds">
            <span>5 ans</span>
            <span>30 ans</span>
          </div>
        </div>

        <!-- Taux d'intérêt -->
        <div class="orpi-sim-field">
          <div class="orpi-sim-field-header">
            <label class="orpi-sim-field-label" for="orpi-sim-taux">Taux d'intérêt</label>
            <span class="orpi-sim-field-value" id="orpi-sim-taux-value">3,56 %</span>
          </div>
          <input type="range" id="orpi-sim-taux" class="orpi-sim-slider"
                 min="0.5" max="8" step="0.05" value="3.56" />
          <div class="orpi-sim-slider-bounds">
            <span>0,50 %</span>
            <span>8,00 %</span>
          </div>
        </div>

        <!-- Taux d'assurance -->
        <div class="orpi-sim-field">
          <div class="orpi-sim-field-header">
            <label class="orpi-sim-field-label" for="orpi-sim-assurance">Taux d'assurance</label>
            <span class="orpi-sim-field-value" id="orpi-sim-assurance-value">0,34 %</span>
          </div>
          <input type="range" id="orpi-sim-assurance" class="orpi-sim-slider"
                 min="0" max="1.5" step="0.01" value="0.34" />
          <div class="orpi-sim-slider-bounds">
            <span>0,00 %</span>
            <span>1,50 %</span>
          </div>
        </div>

      </div>

      <!-- COLONNE DROITE : RÉSULTATS -->
      <div class="orpi-sim-results">
        <div class="orpi-sim-section-title">Votre simulation</div>

        <!-- Mensualité principale -->
        <div class="orpi-sim-result-main">
          <div class="orpi-sim-result-label">Votre mensualité</div>
          <div class="orpi-sim-result-amount" id="orpi-sim-mensualite">917 €</div>
          <div class="orpi-sim-result-unit">par mois (assurance incluse)</div>
        </div>

        <!-- Détails -->
        <div class="orpi-sim-details">
          <div class="orpi-sim-detail-row">
            <span class="orpi-sim-detail-label">Mensualité hors assurance</span>
            <span class="orpi-sim-detail-value" id="orpi-sim-mensualite-ha">874 €</span>
          </div>
          <div class="orpi-sim-detail-row">
            <span class="orpi-sim-detail-label">Dont assurance</span>
            <span class="orpi-sim-detail-value" id="orpi-sim-mensualite-assurance">43 €</span>
          </div>
          <div class="orpi-sim-detail-row">
            <span class="orpi-sim-detail-label">Coût total des intérêts</span>
            <span class="orpi-sim-detail-value" id="orpi-sim-cout-interets">59 894 €</span>
          </div>
          <div class="orpi-sim-detail-row">
            <span class="orpi-sim-detail-label">Coût total de l'assurance</span>
            <span class="orpi-sim-detail-value" id="orpi-sim-cout-assurance">10 200 €</span>
          </div>
          <div class="orpi-sim-detail-row">
            <span class="orpi-sim-detail-label"><strong>Coût total du crédit</strong></span>
            <span class="orpi-sim-detail-value highlight" id="orpi-sim-cout-total">70 094 €</span>
          </div>
        </div>

        <!-- Graphique de répartition -->
        <div class="orpi-sim-chart-section">
          <div class="orpi-sim-chart-title">Répartition du coût total</div>
          <div class="orpi-sim-chart-bar">
            <div class="orpi-sim-chart-capital" id="orpi-sim-bar-capital" style="width:74%">74%</div>
            <div class="orpi-sim-chart-interest" id="orpi-sim-bar-interest" style="width:22%">22%</div>
            <div class="orpi-sim-chart-insurance" id="orpi-sim-bar-insurance" style="width:4%">4%</div>
          </div>
          <div class="orpi-sim-chart-legend">
            <div class="orpi-sim-legend-item">
              <span class="orpi-sim-legend-dot" style="background:#295A82"></span>
              <span>Capital emprunté</span>
            </div>
            <div class="orpi-sim-legend-item">
              <span class="orpi-sim-legend-dot" style="background:#5a6573"></span>
              <span>Intérêts</span>
            </div>
            <div class="orpi-sim-legend-item">
              <span class="orpi-sim-legend-dot" style="background:#f5a623"></span>
              <span>Assurance</span>
            </div>
          </div>
        </div>

        <!-- CTA principal -->
        <a href="#contact" class="orpi-sim-cta" id="orpi-sim-cta-contact">
          Obtenir mon étude personnalisée gratuite
        </a>

        <!-- CTA secondaire : tableau d'amortissement -->
        <div class="orpi-sim-amortization-toggle">
          <button type="button" class="orpi-sim-amortization-link" id="orpi-sim-toggle-amortization">
            Voir le tableau d'amortissement détaillé ▼
          </button>
        </div>

        <div class="orpi-sim-amortization-table" id="orpi-sim-amortization">
          <table>
            <thead>
              <tr>
                <th>Année</th>
                <th>Capital remb.</th>
                <th>Intérêts</th>
                <th>Assurance</th>
                <th>Capital restant dû</th>
              </tr>
            </thead>
            <tbody id="orpi-sim-amortization-body">
              <!-- Rempli dynamiquement -->
            </tbody>
          </table>
        </div>

      </div>

    </div>

    <!-- Mention légale -->
    <div class="orpi-sim-disclaimer">
      Cette simulation est fournie à titre indicatif et ne constitue pas une offre de prêt.
      Un crédit vous engage et doit être remboursé. Vérifiez vos capacités de remboursement avant de vous engager.
      Les taux affichés sont des taux moyens du marché et seront affinés par votre conseiller Orpi Financement
      en fonction de votre profil. Étude personnalisée gratuite et sans engagement.
    </div>

  </div>

  <!-- ================== JAVASCRIPT ================== -->
  <script>
  (function() {
    'use strict';

    // === Conteneur racine pour limiter la portée des sélecteurs ===
    var root = document.getElementById('orpi-simulateur-financement');
    if (!root) return;

    // === Taux indicatifs moyens selon la durée (avril 2026) ===
    // À ajuster si besoin par le webmaster.
    var TAUX_INDICATIFS = {
      10: 3.30,
      15: 3.47,
      20: 3.56,
      25: 3.65,
      30: 3.75
    };

    // === Récupération des éléments ===
    var elMontantSlider = root.querySelector('#orpi-sim-montant');
    var elMontantInput  = root.querySelector('#orpi-sim-montant-input');
    var elDureeSlider   = root.querySelector('#orpi-sim-duree');
    var elDureeValue    = root.querySelector('#orpi-sim-duree-value');
    var elTauxSlider    = root.querySelector('#orpi-sim-taux');
    var elTauxValue     = root.querySelector('#orpi-sim-taux-value');
    var elAssuSlider    = root.querySelector('#orpi-sim-assurance');
    var elAssuValue     = root.querySelector('#orpi-sim-assurance-value');

    var elMensualite      = root.querySelector('#orpi-sim-mensualite');
    var elMensualiteHA    = root.querySelector('#orpi-sim-mensualite-ha');
    var elMensualiteAssu  = root.querySelector('#orpi-sim-mensualite-assurance');
    var elCoutInterets    = root.querySelector('#orpi-sim-cout-interets');
    var elCoutAssurance   = root.querySelector('#orpi-sim-cout-assurance');
    var elCoutTotal       = root.querySelector('#orpi-sim-cout-total');

    var elBarCapital      = root.querySelector('#orpi-sim-bar-capital');
    var elBarInterest     = root.querySelector('#orpi-sim-bar-interest');
    var elBarInsurance    = root.querySelector('#orpi-sim-bar-insurance');

    var elToggleAmort     = root.querySelector('#orpi-sim-toggle-amortization');
    var elAmortTable      = root.querySelector('#orpi-sim-amortization');
    var elAmortBody       = root.querySelector('#orpi-sim-amortization-body');

    var btnsProjet        = root.querySelectorAll('.orpi-sim-project-btn');

    // === Formatage ===
    function formatEuro(value) {
      return Math.round(value).toLocaleString('fr-FR') + ' €';
    }

    function formatPercent(value) {
      return value.toFixed(2).replace('.', ',') + ' %';
    }

    function parseEuroInput(str) {
      var n = parseInt(String(str).replace(/[^0-9]/g, ''), 10);
      return isNaN(n) ? 0 : n;
    }

    // === Calcul de la mensualité (formule classique d'amortissement) ===
    // M = C * (t/12) / (1 - (1 + t/12)^-n)
    function calculerMensualite(capital, tauxAnnuel, dureeMois) {
      if (tauxAnnuel === 0) return capital / dureeMois;
      var tauxMensuel = tauxAnnuel / 100 / 12;
      return capital * tauxMensuel / (1 - Math.pow(1 + tauxMensuel, -dureeMois));
    }

    // === Mise à jour automatique du taux selon la durée ===
    function getTauxIndicatif(duree) {
      // Trouve la durée la plus proche dans TAUX_INDICATIFS
      var durees = Object.keys(TAUX_INDICATIFS).map(Number).sort(function(a, b) { return a - b; });
      var closest = durees[0];
      var minDiff = Math.abs(duree - closest);
      for (var i = 1; i < durees.length; i++) {
        var diff = Math.abs(duree - durees[i]);
        if (diff < minDiff) {
          minDiff = diff;
          closest = durees[i];
        }
      }
      return TAUX_INDICATIFS[closest];
    }

    // === Construction du tableau d'amortissement (par année) ===
    function genererAmortissement(capital, tauxAnnuel, tauxAssu, dureeAnnees) {
      var dureeMois   = dureeAnnees * 12;
      var tauxMensuel = tauxAnnuel / 100 / 12;
      var mensualiteHA = calculerMensualite(capital, tauxAnnuel, dureeMois);
      var assuMensuelle = capital * (tauxAssu / 100) / 12;

      var html = '';
      var capitalRestant = capital;
      var capitalAnnee = 0;
      var interetsAnnee = 0;
      var assuranceAnnee = 0;

      for (var mois = 1; mois <= dureeMois; mois++) {
        var interetMois = capitalRestant * tauxMensuel;
        var capitalMois = mensualiteHA - interetMois;
        capitalRestant -= capitalMois;
        capitalAnnee   += capitalMois;
        interetsAnnee  += interetMois;
        assuranceAnnee += assuMensuelle;

        if (mois % 12 === 0 || mois === dureeMois) {
          var annee = Math.ceil(mois / 12);
          html += '<tr>'
                + '<td>' + annee + '</td>'
                + '<td>' + formatEuro(capitalAnnee) + '</td>'
                + '<td>' + formatEuro(interetsAnnee) + '</td>'
                + '<td>' + formatEuro(assuranceAnnee) + '</td>'
                + '<td>' + formatEuro(Math.max(0, capitalRestant)) + '</td>'
                + '</tr>';
          capitalAnnee = 0;
          interetsAnnee = 0;
          assuranceAnnee = 0;
        }
      }
      return html;
    }

    // === Calcul + mise à jour de l'affichage ===
    function update() {
      var capital   = parseInt(elMontantSlider.value, 10);
      var duree     = parseInt(elDureeSlider.value, 10);
      var taux      = parseFloat(elTauxSlider.value);
      var tauxAssu  = parseFloat(elAssuSlider.value);
      var dureeMois = duree * 12;

      // Mise à jour des libellés des champs
      elMontantInput.value = formatEuro(capital);
      elDureeValue.textContent = duree + ' an' + (duree > 1 ? 's' : '');
      elTauxValue.textContent  = formatPercent(taux);
      elAssuValue.textContent  = formatPercent(tauxAssu);

      // Calculs
      var mensualiteHA   = calculerMensualite(capital, taux, dureeMois);
      var assuMensuelle  = capital * (tauxAssu / 100) / 12;
      var mensualiteTot  = mensualiteHA + assuMensuelle;
      var coutInterets   = (mensualiteHA * dureeMois) - capital;
      var coutAssurance  = assuMensuelle * dureeMois;
      var coutTotal      = coutInterets + coutAssurance;

      // Affichage
      elMensualite.textContent     = formatEuro(mensualiteTot);
      elMensualiteHA.textContent   = formatEuro(mensualiteHA);
      elMensualiteAssu.textContent = formatEuro(assuMensuelle);
      elCoutInterets.textContent   = formatEuro(coutInterets);
      elCoutAssurance.textContent  = formatEuro(coutAssurance);
      elCoutTotal.textContent      = formatEuro(coutTotal);

      // Répartition graphique
      var totalCoutComplet = capital + coutInterets + coutAssurance;
      var pctCapital   = (capital / totalCoutComplet) * 100;
      var pctInterets  = (coutInterets / totalCoutComplet) * 100;
      var pctAssurance = (coutAssurance / totalCoutComplet) * 100;

      elBarCapital.style.width   = pctCapital + '%';
      elBarInterest.style.width  = pctInterets + '%';
      elBarInsurance.style.width = pctAssurance + '%';
      elBarCapital.textContent   = Math.round(pctCapital) + '%';
      elBarInterest.textContent  = Math.round(pctInterets) + '%';
      elBarInsurance.textContent = Math.round(pctAssurance) + '%';

      // Si tableau d'amortissement visible, on le régénère
      if (elAmortTable.classList.contains('visible')) {
        elAmortBody.innerHTML = genererAmortissement(capital, taux, tauxAssu, duree);
      }
    }

    // === Listeners ===
    elMontantSlider.addEventListener('input', update);
    elDureeSlider.addEventListener('input', function() {
      // Quand la durée change, on ajuste automatiquement le taux indicatif
      var duree = parseInt(elDureeSlider.value, 10);
      var nouveauTaux = getTauxIndicatif(duree);
      elTauxSlider.value = nouveauTaux;
      update();
    });
    elTauxSlider.addEventListener('input', update);
    elAssuSlider.addEventListener('input', update);

    // Saisie directe du montant
    elMontantInput.addEventListener('input', function() {
      var v = parseEuroInput(this.value);
      if (v < parseInt(elMontantSlider.min, 10)) v = parseInt(elMontantSlider.min, 10);
      if (v > parseInt(elMontantSlider.max, 10)) v = parseInt(elMontantSlider.max, 10);
      elMontantSlider.value = v;
      update();
    });
    elMontantInput.addEventListener('blur', function() {
      this.value = formatEuro(parseInt(elMontantSlider.value, 10));
    });
    elMontantInput.addEventListener('focus', function() {
      this.value = String(elMontantSlider.value);
      this.select();
    });

    // Boutons type de projet
    btnsProjet.forEach(function(btn) {
      btn.addEventListener('click', function() {
        btnsProjet.forEach(function(b) { b.classList.remove('active'); });
        this.classList.add('active');
      });
    });

    // Toggle tableau d'amortissement
    elToggleAmort.addEventListener('click', function() {
      var isVisible = elAmortTable.classList.toggle('visible');
      this.textContent = isVisible
        ? "Masquer le tableau d'amortissement ▲"
        : "Voir le tableau d'amortissement détaillé ▼";
      if (isVisible) {
        var capital  = parseInt(elMontantSlider.value, 10);
        var duree    = parseInt(elDureeSlider.value, 10);
        var taux     = parseFloat(elTauxSlider.value);
        var tauxAssu = parseFloat(elAssuSlider.value);
        elAmortBody.innerHTML = genererAmortissement(capital, taux, tauxAssu, duree);
      }
    });

    // Initialisation
    update();
  })();
  </script>

</div>
<!-- ================== FIN DU SIMULATEUR ORPI ================== -->

Simulation immédiate et gratuite

Contactez-nous Appelez-nous